import axios from 'axios'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://localhost:8080/api',
  timeout: 5000
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  error => {
    console.log('请求错误：', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    const res = response.data
    if (res.success) {
      return res
    } else {
      console.error('响应错误：', res.message)
      return Promise.reject(new Error(res.message || 'Error'))
    }
  },
  error => {
    console.log('网络错误：', error)
    if (error.response && error.response.status === 401) {
      // token过期，清除本地存储并跳转到登录页
      localStorage.removeItem('token')
      localStorage.removeItem('username')
      localStorage.removeItem('userInfo')
      window.location.href = '/login'
    } else if (error.response && error.response.status === 403) {
      // 权限不足
      console.error('权限不足：', error.response.data.message)
      // 可以选择显示错误消息或跳转到登录页
      // window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

// 获取用户信息
export const getUserInfo = () => {
  return service.get('/user/info')
}

// 更新用户信息
export const updateUserInfo = (data) => {
  return service.put('/user/info', data)
}

// 获取用户列表（管理员功能）
export const getUserList = (params) => {
  return service.get('/user/list', { params })
}

// 获取用户统计（管理员功能）
export const getUserStats = () => {
  return service.get('/user/stats')
}

// 更新用户（管理员功能）
export const updateUser = (data) => {
  console.log('发送更新用户请求，参数:', data)
  return service.put(`/user/${data.id}`, data).then(response => {
    console.log('更新用户响应:', response)
    return response
  }).catch(error => {
    console.error('更新用户请求失败:', error)
    console.error('错误响应详情:', error.response)
    throw error
  })
}

// 获取指定用户信息（管理员功能）
export const getUserById = (id) => {
  return service.get(`/user/${id}`)
}

// 获取指定用户信息（用户更新模块）
export const getUserUpdateById = (id) => {
  return service.get(`/userupdate/${id}`)
}

// 更新用户信息（用户更新模块）
export const updateUserUpdate = (data) => {
  return service.put(`/userupdate/${data.id}`, data)
}

// 删除用户（管理员功能）
export const deleteUser = (id) => {
  return service.delete(`/user/${id}`)
}

// 批量删除用户（管理员功能）
export const batchDeleteUsers = (userIds) => {
  console.log('批量删除用户请求：', { userIds })
  return service.delete('/user/batch', {
    headers: {
      'Content-Type': 'application/json'
    },
    data: { userIds }
  }).catch(error => {
    console.error('批量删除用户API错误详情：', error)
    // 重新抛出错误以便上层处理
    throw error
  })
}

// 导出userApi对象
export const userApi = {
  getUserInfo,
  updateUserInfo,
  getUserList,
  getUserStats,
  updateUser,
  getUserById,
  getUserUpdateById,
  updateUserUpdate,
  deleteUser,
  batchDeleteUsers
}